// 基础配置
const BASE_URL = 'https://api.example.com' // 替换为实际的API地址
const TOKEN_KEY = 'user_token'

// 请求拦截器
const requestInterceptor = (config) => {
	// 获取token
	const token = uni.getStorageSync(TOKEN_KEY)
	if (token) {
		config.header = {
			...config.header,
			'Authorization': `Bearer ${token}`
		}
	}
	return config
}

// 响应拦截器
const responseInterceptor = (response) => {
	const { statusCode, data } = response
	
	// 请求成功
	if (statusCode >= 200 && statusCode < 300) {
		return data
	}
	
	// 处理错误
	uni.showToast({
		title: data.message || '请求失败',
		icon: 'none'
	})
	
	return Promise.reject(data)
}

// 统一请求方法
const request = (options) => {
	// 合并配置
	const config = {
		url: BASE_URL + options.url,
		method: options.method || 'GET',
		data: options.data,
		header: {
			'Content-Type': 'application/json',
			...options.header
		}
	}
	
	// 请求拦截
	const interceptedConfig = requestInterceptor(config)
	
	// 发起请求
	return new Promise((resolve, reject) => {
		uni.request({
			...interceptedConfig,
			success: (res) => {
				resolve(responseInterceptor(res))
			},
			fail: (err) => {
				uni.showToast({
					title: '网络错误',
					icon: 'none'
				})
				reject(err)
			}
		})
	})
}

// API接口定义
const api = {
	// 热门解梦相关接口
	hot: {
		// 获取热门梦境列表
		getHotDreams: (params) => {
			return request({
				url: '/api/hot/dreams',
				method: 'GET',
				data: params
			})
		},
		// 获取热门标签
		getHotTags: () => {
			return request({
				url: '/api/hot/tags',
				method: 'GET'
			})
		}
	},
	
	// 解梦相关接口
	dream: {
		// 解梦
		interpret: (data) => {
			return request({
				url: '/api/dream/interpret',
				method: 'POST',
				data
			})
		},
		// 获取解梦历史
		getHistory: (params) => {
			return request({
				url: '/api/dream/history',
				method: 'GET',
				data: params
			})
		}
	},
	
	// 用户相关接口
	user: {
		// 登录
		login: (data) => {
			return request({
				url: '/api/user/login',
				method: 'POST',
				data
			})
		},
		// 获取用户信息
		getUserInfo: () => {
			return request({
				url: '/api/user/info',
				method: 'GET'
			})
		}
	}
}

export default api 